home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / Timer.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  2.5 KB  |  120 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Timer.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Timer;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __TIMER__}
  27. {$SETC __TIMER__ := 1}
  28.  
  29. {$I+}
  30. {$SETC TimerIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {    ConditionalMacros.p                                            }
  38.  
  39. {$IFC UNDEFINED __OSUTILS__}
  40. {$I OSUtils.p}
  41. {$ENDC}
  42. {    MixedMode.p                                                    }
  43. {    Memory.p                                                    }
  44.  
  45. {$PUSH}
  46. {$ALIGN MAC68K}
  47. {$LibExport+}
  48.  
  49. CONST
  50. { high bit of qType is set if task is active }
  51.     kTMTaskActive                = 0+(1 * (2**(15)));
  52.  
  53.     
  54. TYPE
  55.     TMTaskPtr = ^TMTask;
  56.  
  57.     {
  58.         TimerProcPtr uses register based parameters on the 68k and cannot
  59.         be written in or called from a high-level language without the help of
  60.         mixed mode or assembly glue.
  61.  
  62.         In:
  63.          => tmTaskPtr       A1.L
  64.     }
  65.     TimerProcPtr = ProcPtr;  { PROCEDURE Timer(tmTaskPtr: TMTaskPtr); }
  66.     TimerUPP = UniversalProcPtr;
  67.  
  68.     TMTask = RECORD
  69.         qLink:                    QElemPtr;
  70.         qType:                    INTEGER;
  71.         tmAddr:                    TimerUPP;
  72.         tmCount:                LONGINT;
  73.         tmWakeUp:                LONGINT;
  74.         tmReserved:                LONGINT;
  75.     END;
  76.  
  77. PROCEDURE InsTime(tmTaskPtr: QElemPtr);
  78.     {$IFC NOT GENERATINGCFM}
  79.     INLINE $205F, $A058;
  80.     {$ENDC}
  81. PROCEDURE InsXTime(tmTaskPtr: QElemPtr);
  82.     {$IFC NOT GENERATINGCFM}
  83.     INLINE $205F, $A458;
  84.     {$ENDC}
  85. PROCEDURE PrimeTime(tmTaskPtr: QElemPtr; count: LONGINT);
  86.     {$IFC NOT GENERATINGCFM}
  87.     INLINE $201F, $205F, $A05A;
  88.     {$ENDC}
  89. PROCEDURE RmvTime(tmTaskPtr: QElemPtr);
  90.     {$IFC NOT GENERATINGCFM}
  91.     INLINE $205F, $A059;
  92.     {$ENDC}
  93. PROCEDURE Microseconds(VAR microTickCount: UnsignedWide);
  94.     {$IFC NOT GENERATINGCFM}
  95.     INLINE $A193, $225F, $22C8, $2280;
  96.     {$ENDC}
  97. CONST
  98.     uppTimerProcInfo = $0000B802; { Register PROCEDURE (4 bytes in A1); }
  99.  
  100. FUNCTION NewTimerProc(userRoutine: TimerProcPtr): TimerUPP;
  101.     {$IFC NOT GENERATINGCFM }
  102.     INLINE $2E9F;
  103.     {$ENDC}
  104.  
  105. PROCEDURE CallTimerProc(tmTaskPtr: TMTaskPtr; userRoutine: TimerUPP);
  106.     {$IFC NOT GENERATINGCFM}
  107.     {To be implemented:  Glue to move parameters into registers.}
  108.     {$ENDC}
  109.  
  110. {$ALIGN RESET}
  111. {$POP}
  112.  
  113. {$SETC UsingIncludes := TimerIncludes}
  114.  
  115. {$ENDC} {__TIMER__}
  116.  
  117. {$IFC NOT UsingIncludes}
  118.  END.
  119. {$ENDC}
  120.